home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / gpen32k / source / lib / osrc / message2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-01  |  1.9 KB  |  98 lines

  1. /*
  2.     message2.c
  3. */
  4.  
  5. #include <stdlib.h>
  6. #include <stdarg.h>
  7. #include <string.h>
  8. #include <EGB.H>
  9. #include <MOS.H>
  10. #include <FMCfrb.h>
  11. #include <kkstr2.h>
  12. #include <Normlib.h>
  13. #include <okome.h>
  14.  
  15. extern char work[];
  16.  
  17. #define    MEY1    140
  18. #define MEX4    280
  19. #define MEX1    (320-MEX4/2)
  20. #define MEX3    (MEX4-1)
  21. #define    MEY3    (MEY4-1)
  22. #define MEX2    (MEX1+MEX3)
  23. #define    MEY2    (MEY1+MEY3)
  24.  
  25. /*
  26.  m:確認モード
  27.  1: 確認
  28.  2: 実行 取消
  29. */
  30. /*    message2(int n, char *mess, ..., int m )    */
  31. int message2(int n, ... )
  32. {
  33.     int mb, mx, my, p, m, MEY4;
  34.     unsigned int kb, en;
  35.     char *mess;
  36.     va_list ap;
  37.     va_start(ap, n);
  38.     MEY4 = n*18+50;
  39.     p = EGB_getWritePage( 0, 0 );
  40.     EGB_writePage( work, 0 );
  41.     MOS_disp(0);
  42.     OKM_gth( MEX1,MEY1, MEX2,MEY2, 1 );
  43.     boxbf(MEX1,MEY1,MEX2,MEY2,8,15);
  44.     boxb(MEX1+2,MEY1+2,MEX2-2,MEY2-2,8);
  45.     for (mx = 0; mx < n; mx++) {
  46.         mess = va_arg(ap, char *);
  47.         font12((MEX1+MEX2)/2-strlen(mess)*3, MEY1+mx*18+26, mess, 8 );
  48.     }
  49.     m = va_arg(ap, int);
  50.     va_end(ap);
  51.     for ( mb = 2-m; mb<2; mb++ ) {
  52.         boxbf(MEX2-130+60*mb,MEY2-29,MEX2-90+mb*60,MEY2-8,8,15);
  53.     }
  54.     if ( m==1 ) {
  55.         font12(MEX2- 65,MEY2-13,"確 認",8);
  56.     } else {
  57.         font12(MEX2-125,MEY2-13,"実 行",8);
  58.         font12(MEX2- 65,MEY2-13,"取 消",8);
  59.     }
  60.     MOS_disp(1);
  61.     do    {
  62.         MOS_rdpos(&mb,&mx,&my);
  63.         do    {
  64.             kb = KYB_read(1,&en);
  65.         }    while (kb==0xffff && KAN_inpchk()==KAN_MISET);
  66.         if (mb && my>=MEY2-29 && my<=MEY2-8) {
  67.             if ( mx>=MEX2-70 && mx<=MEX2-20 ) {
  68.                 m-= 1;
  69.                 break;
  70.             }
  71.             if ( mx>=MEX2-130 && mx<=MEX2-80 && m == 2) {
  72.                 m = 0;
  73.                 break;
  74.             }
  75.         }
  76. /*        if (mb && (mx>=MEX1 && mx<=MEX2 && my>=MEY1 && my<=MEY2)==0) {
  77.             m = (mb==1) ? 0 : (m-1) ;
  78.             break;
  79.         }    */
  80.         if ( kb == 0x0D || kb==0x8012 )
  81.         {
  82.             m = 0;
  83.             break;
  84.         }
  85.         if (m == 2 && ( kb == 0x1B || kb == 0x8011 ) )
  86.         {
  87.             m = 1;
  88.             break;
  89.         }
  90.     }    while (1);
  91.     MOS_disp(0);
  92.     OKM_gth( MEX1,MEY1, MEX2,MEY2, 0 );
  93.     MOS_disp(1);
  94.     EGB_writePage( work, p );
  95.     mbout(&mb,&mx,&my);
  96.     return (m);
  97. }
  98.